package com.example.b_308.myapplication.comment.utils;

import android.content.Context;
import android.content.SharedPreferences;

/**
 * Created by tongkang on 16/6/22.
 */
public class SharedPreferencesUtils {


    public static SharedPreferences getSp(Context context) throws NullPointerException{
            SharedPreferences sp = context.getSharedPreferences("config",
                    Context.MODE_PRIVATE);
            return sp;
    }

    /**
     * @param context
     * @param key
     * @param value   放置boolean 的值
     */
    public static void putBoolean(Context context, String key, Boolean value) {
        getSp(context).edit().putBoolean(key, value).commit();// xml
    }

    /**
     * @param context
     * @param key
     * @param value   放置boolean 的值
     */
    public static void put(Context context, String key, Boolean value) {
        getSp(context).edit().putBoolean(key, value).commit();// xml
    }

    /**
     * 保存对象
     *
     * @param context
     * @param key
     * @param t
     * @param <T>
     */
    public static <T> void putObj(Context context, String key, T t) {
        if (t != null) {
            String json = JsonUtils.tToJson(t);
            putString(context, key, json);
        } else {
            putString(context, key, "");
        }
    }

    /**
     * 获取对象
     *
     * @param context
     * @param key
     * @param tClass
     * @param <T>
     * @return
     */
    public static <T> T getObj(Context context, String key, Class<T> tClass) {
        String json = getString(context, key);
        if (StringValidator.isEmply(json)) {
            return null;
        }
        return JsonUtils.jsonToT(json, tClass);
    }

//    /**
//     * 获取数组
//     *
//     * @param context
//     * @param key
//     * @param tClass
//     * @param <T>
//     * @return
//     */
//    public static <T> ArrayList<T> getArray(Context context, String key, Class<T> tClass) {
//        JSONArray jsonArray = JsonUtils.getJsonArray(getString(context, key));
//        ArrayList<T> arrayList = new ArrayList();
//        for (int i = 0; i < jsonArray.length(); i++) {
//            arrayList.add(new Gson().fromJson(JsonUtils.getJsonArrayString(jsonArray, i), tClass));
//        }
//        return arrayList;
//    }
//
//    /**
//     * 保存数组
//     *
//     * @param arrayList
//     * @param key
//     * @param tClass
//     */
//    public static <T> void savaArray(ArrayList<T> arrayList, Context context, String key, Class<T> tClass) {
//        JSONArray jsonArray = new JSONArray();
//        for (T t : arrayList) {
//            jsonArray.put(new Gson().toJson(t, tClass));
//        }
//        putString(context, key, jsonArray.toString());
//    }

    /**
     * @param context
     * @param key     获取boolean 的值
     */
    public static Boolean getBoolean(Context context, String key, boolean defaultState) {
        return getSp(context).getBoolean(key, defaultState);
    }

    /**
     * @param context
     * @param key
     * @param value   放置String的值
     */
    public static void putString(Context context, String key, String value) {
        getSp(context).edit().putString(key, value).commit();
    }

    public static String getString(Context context, String key) {
        return getSp(context).getString(key, "");
    }

    // 存int
    public static void putInt(Context context, String key, int value) {
        getSp(context).edit().putInt(key, value).commit();
        //HashMap---commit(写文件)
    }

    // 去int
    public static int getInt(Context context, String key, int defValue) {
        return getSp(context).getInt(key, defValue);
    }

    public static void putLong(Context context, String key, long value) {
        getSp(context).edit().putLong(key, value).commit();
    }

    public static long getLong(Context context, String key) {
        return getSp(context).getLong(key, -1);
    }

}
